/**
 * Copyright (c) 2023-2024 Huawei Technologies Co., Ltd.
 *
 * ascendc_ops is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 * http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
#ifndef OP_API_INC_LEVEL0_OP_FLASH_ATTENTION_SCORE_OP_H_
#define OP_API_INC_LEVEL0_OP_FLASH_ATTENTION_SCORE_OP_H_

#include "opdev/op_executor.h"

namespace l0op {

const std::array<const aclTensor *, 4>
FlashAttentionScore(const aclTensor *query, const aclTensor *key, const aclTensor *value,
                    const aclTensor *realShiftOptional, const aclTensor *dropMaskOptional,
                    const aclTensor *paddingMaskOptional, const aclTensor *attenMaskOptional,
                    const aclIntArray *prefixOptional, const aclIntArray *actualSeqQLenOptional,
                    const aclIntArray *actualSeqKvLenOptional, double scaleValueOptional, double keepProbOptional,
                    int64_t preTockensOptional, int64_t nextTockensOptional, int64_t headNum, const char *inputLayout,
                    int64_t innerPreciseOptional, int64_t sparseModeOptional, aclOpExecutor *executor);
}

#endif
